package _0219_._04_example.service.impl;

import _0219_._04_example.dao.ProductDAO;
import _0219_._04_example.dao.ProductDAOImpl;
import _0219_._04_example.model.Product;
import _0219_._04_example.service.ProductService;

public class ProductServiceImpl implements ProductService {

    ProductDAO dao = new ProductDAOImpl();

    // 获取所有的商品（非空）
    @Override
    public Product[] getAllProducts() {

        Product[] allProducts = dao.getAllProducts();
        return allProducts;
    }


    // 插入一个商品到数组中
    @Override
    public boolean insertProduct(Product product) {

        // 1. 判断商品id是否重复
        boolean ret = dao.judgeIdExists(product.getId());

        // 2. 如果重复，直接返回false
        if (ret) {
            return false;
        }

        // 3. 如果不重复，插入商品到数组中
        dao.insertProduct(product);

        // 返回true
        return true;
    }

    @Override
    public Product searchForProducts(int id) {
        // 1， 判断id是否存在
        boolean ret = dao.judgeIdExists(id);
        // 2. 如果存在，则返回产品；如果不存在则返回null
        if(ret)
            return dao.searchForProducts(id);
        else
            return null;
    }

    @Override
    public Product searchForProducts(String productName) {
        // 1， 判断id是否存在
        boolean ret = dao.judgeIdExists(productName);
        // 2. 如果存在，则返回产品；如果不存在则返回null
        if(ret)
            return dao.searchForProducts(productName);
        else
            return null;
    }

    @Override
    public Product updateProducts(int id, String productName, double price, String describe) {
        // 1， 判断id是否存在
        boolean ret = dao.judgeIdExists(id);
        // 2. 如果存在，则返回产品；如果不存在则返回null
        if(ret)
            return dao.updateProducts(id, productName, price, describe);
        else
            return null;
    }

    @Override
    public boolean removeProduct(int id) {
        // 1， 判断id是否删除成功
        boolean ret = dao.removeProduct(id);
        // 2. 如果存在，则返回产品；如果不存在则返回null
        if(ret)
            return true;
        else
            return false;
    }
}
